﻿package com.wongoing.sys.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.wongoing.base.BaseServiceImpl;
import com.wongoing.base.PageResult;
import com.wongoing.bus.util.Constants;
import com.wongoing.sys.dao.SysFunctionDao;
import com.wongoing.sys.model.SysFunction;
import com.wongoing.sys.model.ext.SysFunctionExt;
import com.wongoing.sys.service.SysFunctionService;

@Service("sysFunctionService")
@Transactional
public class SysFunctionServiceImpl extends BaseServiceImpl<SysFunction> implements SysFunctionService {
	private SysFunctionDao dao;

	@Autowired
	public void setDao(SysFunctionDao dao) {
		super.setDao(dao);
		this.dao = dao;
	}
	
	/**
	 * 功能说明：根据用户Id获得对应岗位可选择功能集合（功能选择界面使用）
	 * 修改说明：
	 * @author zhenglibing，吴兆强
	 * @date 2017年10月13日 下午10:51:24
	 * @param customerId 查询参数：客户Id
	 * @return 返回符合条件的功能记录集合Integer customerId, String status
	 */
	public List<SysFunction> getByCustomerId(Integer customerId) {
		Map<String, Object> param = new HashMap<String, Object>();
		param.put("customerId", customerId);
		param.put("status", Constants.STATUS_NORMAL);
		List<SysFunction> resultList = this.dao.getByCustomerId(param);
		return resultList;
	}

	/**
	 * 功能说明：根据角色ID获取权限
	 * 修改说明：
	 * @author zhenglibing，吴兆强,吴兆强
	 * @date 2017年10月13日 下午8:57:25
	 * @param customerId 查询参数：用户Id
	 * @param status 查询参数：状态
	 * @return 返回符合条件的功能记录集合
	 */
	public List<SysFunction> getByCustomerId(Integer customerId, String status) {
		Map<String, Object> param = new HashMap<String, Object>();
		param.put("customerId", customerId);
		param.put("status", Constants.STATUS_NORMAL);
		return this.dao.getByCustomerId(param);
	}
	/**
	 * 功能说明：通过PageResult获取功能分页数据
	 * 修改说明：
	 * @author 吴兆强
	 * @date 2017年10月13日 下午8:54:19
	 * @param pageResult 分页查询对象，包含查询条件
	 * @return 返回分页查询对象，包含页面数据
	 */
	public PageResult<SysFunction> getFunctionListPageResult(PageResult<SysFunction> pageResult) {
		pageResult.getParam().put("offset", pageResult.getPageSize() * (pageResult.getPageCurrent() - 1));
		pageResult.getParam().put("limit", pageResult.getPageSize());
		if (!"".equals(pageResult.getOrderField())) { pageResult.getParam().put("orderColumn", pageResult.getOrderField()); }
		pageResult.getParam().put("orderTurn", pageResult.getOrderDirection());
		List<SysFunction> data = this.dao.getFunctionListByParam(pageResult.getParam());
		pageResult.setList(data);
		int totalSize = this.dao.countOfFunctionListByParam(pageResult.getParam());
		System.out.println("查询到的总记录数为："+totalSize);
		pageResult.setTotal(totalSize);
		return pageResult;
	}
	
	/**
	 * 功能说明：各种菜单（树形控件）中使用的权限列表数据
	 * 修改说明：
	 * @author zhenglibing，吴兆强
	 * @date 2017年10月13日 下午9:02:29
	 * @param status 查询参数：状态
	 * @return 返回符合条件的功能项集合
	 */
	public List<SysFunction> getListByParamToMenu(String status) {
		Map<String,Object> param = new HashMap<String,Object>();
		param.put("status", status);
		return this.dao.getListByParamToMenu(param);
	}
	
	/**
	 * 功能说明：根据角色ID获取权限
	 * 修改说明：
	 * @author zhenglibing，吴兆强
	 * @date 2017年10月13日 下午9:03:34
	 * @param PostId 查询参数：岗位Id
	 * @param status 查询参数：状态
	 * @return
	 */
	public List<SysFunction> getByPostId(Integer postId, String status) {
		Map<String,Object> param = new HashMap<String, Object>();
		param.put("postId", postId);
		param.put("status", status);
		return this.dao.getByPostId(postId, status);
	}

}
